package com.demo.core.service.base;

import java.util.List;

import com.demo.core.model.FormSource;
import com.demo.core.model.FormSourceParam;

/**
 * 表单使用的数据资源服务
 * @author ryuu.kk
 *
 */
public interface FormSourceService {

	/**
	 * 保存自定义表单资源模型
	 * @param formSource 自定义表单资源
	 * @return Long 主键ID
	 */
	Long save(FormSource formSource);
	
	/**
	 * 保存自定义表单资源de参数模型
	 * @param formSourceParam 自定义表单资源的参数模型
	 * @return Long 主键ID
	 */
	Long save(FormSourceParam formSourceParam);
	
	/**
	 * 保存自定义表单资源参数模型列表
	 * @param sourceId 资源ID
	 * @param formSourceList 自定义表单资源参数列表
	 */
	void save(Long sourceId,  List<FormSourceParam> formSourceParamList);
	
	/**
	 * 删除自定义表单资源
	 * @param id 表单资源模型主键
	 */
	void deleteSource(Long id);
	
	/**
	 * 删除自定义表单资源参数模型
	 * @param id 表单资源参数模型主键
	 */
	void deleteSourceParam(Long id);
	
	/**
	 * 删除自定义表单资源参数模型(多删)
	 * @param sourceId 表单资源模型主键ID
	 */
	void deleteSourceParams(Long sourceId);
	
	/**
	 * 更新自定义表单资源
	 * @param id 主键
	 * @param title 标题
	 * @param ds 数据源名
	 * @param source 数据源脚本
	 */
	void updateSource(Long id, String title, String ds, String source);
	
	/**
	 * 更新自定义表单资源
	 * @param id 主键ID
	 * @param type 类型
	 */
	void updateSource(Long id, String type);
	
	/**
	 * 更新自定义表单参数资源
	 * @param id 主键
	 * @param title 标题
	 * @param defaultValue 默认值
	 */
	void updateSourceParam(Long id, String title, String defaultValue);
	
	/**
	 * 更新自定义表单参数资源
	 * @param id 主键ID
	 * @param type 类型
	 */
	void updateSourceParam(Long id, String type);
	
	/**
	 * 自定义表单资源Source
	 * @param id 主键ID
	 * @return FormSource
	 */
	FormSource findSource(Long id);
	
	/**
	 * 查询自定义表单资源Source列表
	 * @param formId 表单ID
	 * @return List<FormSource>
	 */
	List<FormSource> findSourceList(Long formId);
	
	/**
	 * 查询自定义表单资源Source列表(联合查询)
	 * @param formId 表单ID
	 * @return List<FormSource>
	 */
	List<FormSource> querySourceList(Long formId);
	
	/**
	 * 自定义表单资源参数
	 * @param id 主键ID
	 * @return FormSourceParam
	 */
	FormSourceParam findSourceParam(Long id);
	
	/**
	 * 自定义表单参数模型列表
	 * @param sourceId 资源ID
	 * @return List<FormSourceParam>
	 */
	List<FormSourceParam> findSourceParamList(Long sourceId);
}
